<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"><!--声明Thymeleaf命名空间-->
<head>
    <meta charset="UTF-8">
    <title>Thymeleaf 表单绑定、表单验证</title>

</head>
<body>
<a th:href="@{/home/testThymeleaf}">to home</a><!--@{} 配置url的Thymeleaf表达式-->
<br>
<!--/*@thymesVar id="user" type="com.leedsoft.spittr.model.User"*/-->
<!--th:object绑定控制器vo，命令对象。。注意必须和vo同名-->
<form method="post" th:object="${user}" th:action="@{/home/testThymeleaf}">
    <!--表单绑定产生的#fields对象-->
    <div th:if="${#fields.hasAnyErrors()}"><!--if用法，决定当前标签是否显示-->
        <!--forEach用法，决定当前标签是否显示-->
        <h1 th:each="err : ${#fields.errors()}" th:text="${err}"></h1>
    </div><!--表单域属性th:field起到绑定vo相应字段的作用，模板解析后生成name、value两个属性-->
    年龄：<input th:class="${#fields.hasErrors('age')}? 'error'"
              th:field="*{age}"><!--*{} 绑定命令对象属性的Thymeleaf表达式-->
    <span th:text="${#fields.errors('age')}"></span>
    <br>
    姓名：<input th:class="${#fields.hasErrors('name')}? 'error'" th:field="*{name}"><span th:text="${#fields.errors('name')}"></span><br>
    <input type="submit" value="提交">
    <span th:text="${#messages.msg('age.notNull', 'wang', 'leeds')}"></span>
</form>
</body>
</html>